﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using System.Data;
using System.Data.OleDb;
namespace DAO
{
    public static class PhanCongGiangDayDAO
    {
        //lấy danh sách giáo viên
        public static DataTable GetAllGiaoVien()
        {
            DataTable dt = new DataTable();
            try
            {
                string sql = "select gv.ID,gv.hoten,lgv.tenloaigiaovien from loaigiaovien lgv,giaovien gv where gv.IDloaigiaovien=lgv.id";
                dt = DataProvider.ExecuteQuery(sql);
            }
            catch (Exception)
            {
                throw new Exception("Không lấy được danh sách môn học theo khối");
            }
            return dt;
        }

        // get all loại giáo viền
        public static DataTable GetAllLoaiGiaoVien()
        {
            DataTable result = new DataTable();
            try
            {
                string sql = "select * from LoaiGiaoVien";
                result = DataProvider.ExecuteQuery(sql);
            }
            catch (Exception)
            {

                throw new Exception("Khong the lay loại giáo viên");
            }
            return result;
        }

        // get all tên lớp
        public static DataTable GetAllLop()
        {
            DataTable result = new DataTable();
            try
            {
                string sql = "select * from Lop";
                result = DataProvider.ExecuteQuery(sql);
            }
            catch (Exception)
            {

                throw new Exception("Khong the lay được tên lớp");
            }
            return result;
        }

        //lấy danh sách đầy đủ
        public static DataTable GetAllGiaoVienTheoLop(string ID)
        {
            DataTable dt = new DataTable();
            try
            {
                string sql = "select l.TenLop from phanconggiangday pcgd,lop l where l.ID=pcgd.IDLop and pcgd.IDGiaoVien=?";
                IList<OleDbParameter> arrParameter = new List<OleDbParameter>();
                arrParameter.Add(new OleDbParameter("@IDGiaoVien", ID));
                dt = DataProvider.ExecuteNonQuery(sql, arrParameter);
            }
            catch (Exception)
            {
                throw new Exception("Không lấy được danh sách giáo viên theo lớp");
            }
            return dt;
        }

        //lấy danh sách lớp học mà giáo viên đó không dạy

        public static DataTable GetAllGiaoVienLop(string ID)
        {
            DataTable dt = new DataTable();
            try
            {
                string sql = "select l.TenLop from Lop l where not exists(select * from phanconggiangday pcgd where pcgd.IDLop=l.ID and pcgd.IDGiaoVien=?)";


                IList<OleDbParameter> arrParameter = new List<OleDbParameter>();
                arrParameter.Add(new OleDbParameter("@IDGiaoVien", ID));
                dt = DataProvider.ExecuteNonQuery(sql, arrParameter);
            }
            catch (Exception)
            {
                throw new Exception("Không lấy được danh sách lớp học của giáo viên đó");
            }
            return dt;
        }

        //thêm
        public static Boolean Them(GiaoVienDTO item)
        {
            Boolean kq = false;
            try
            {
                String strQuery = "Insert into GiaoVien values (?,?,?)";
                IList<OleDbParameter> arrParameter = new List<OleDbParameter>();
                arrParameter.Add(new OleDbParameter("@ID", item.ID));
                arrParameter.Add(new OleDbParameter("@IDLoaiGiaoVien", item.IDLoaiGiaoVien));
                arrParameter.Add(new OleDbParameter("@HoTen", item.HoTen));
                DataTable dt = DataProvider.ExecuteNonQuery(strQuery, arrParameter);
                kq = true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return kq;
        }

        //cập nhật
        public static Boolean CapNhat(GiaoVienDTO item)
        {
            Boolean kq = false;
            try
            {
                String strQuery = "Update GiaoVien Set IDLoaiGiaoVien = ?,HoTen=? Where ID = ?";
                IList<OleDbParameter> arrParameter = new List<OleDbParameter>();
                arrParameter.Add(new OleDbParameter("@IDLoaiGiaoVien", item.IDLoaiGiaoVien));
                arrParameter.Add(new OleDbParameter("@HoTen", item.HoTen));
                arrParameter.Add(new OleDbParameter("@ID", item.ID));
                DataTable dt = DataProvider.ExecuteNonQuery(strQuery, arrParameter);
                kq = true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return kq;
        }

        //xóa
        public static Boolean Xoa(String ID)
        {
            Boolean kq = false;
            try
            {
                String strQuery = "Delete From GiaoVien Where ID=?";
                IList<OleDbParameter> arrParameter = new List<OleDbParameter>();
                arrParameter.Add(new OleDbParameter("@ID", ID));
                DataTable dt = DataProvider.ExecuteNonQuery(strQuery, arrParameter);
                kq = true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return kq;
        }
    }
}
